package com.asm.repository;

import com.asm.entity.sys.ContractContain;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

/**
 * @author morningbear
 * @date 2019/7/11
 */
@Repository
public interface ContractContainRepository extends JpaRepository<ContractContain, Long> {

    /**
     * 返回对应id的合同关联信息
     *
     * @param id 合同关联记录id
     * @return 合同关联信息
     */
    @Query("select c from ContractContain c where c.id=:id and c.isDel=false ")
    ContractContain findContractContainById(Long id);

    /**
     * 根据合同编号查询与合同有关的所有合同关联记录
     *
     * @param contractId 合同编号
     * @param page 分页对象
     * @return 与合同有关的所有合同关联记录
     */
    @Query("select c from ContractContain c where c.id=:contractId and c.isDel=false ")
    Page<ContractContain> findByContractId(@Param("contractId") Long contractId, Pageable page);

    /**
     * 根据广告位id查询与广告位有关的所有合同关联记录
     *
     * @param spotId 广告位id
     * @param pageable 分页对象
     * @return 与广告位有关的合同关联记录
     */
    @Query("select c from ContractContain c where c.spotId=:spotId and c.isDel=false")
    Page<ContractContain> findBySpotId(@Param("spotId") Long spotId,Pageable pageable);

    /**
     * 查询所有的合同关联记录
     *
     * @param of 分页请求
     * @return 所有的合同关联记录
     */
    @Query("select c from ContractContain c where c.isDel=false ")
    Page<ContractContain> findAll(PageRequest of);
}
